Micron Document
πŸŽ–οΈGitΠ―Ρ€Π°πŸŽ–οΈ

Node / reticulum / Columba-iOS rns://bfb3becae4b7568796ac5276b6bc5741/reticulum/Columba-iOS
Mirrored from https://github.com/torlando-tech/Columba-iOS synced 1h ago


iOS version of Columba, the native LXMF messaging app for Reticulum networks


>Columba

An iOS messaging app built on Reticulum for encrypted, off-grid communication. It supports text messaging, voice calls, location sharing, and file transfers over TCP, local Wi-Fi, BLE, and LoRa radio.

Build flavors

Columba has two compile-time app flavors. They are separate targets and schemes, not a runtime preference.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Flavor β”‚ App target β”‚ Scheme β”‚ Runtime flag β”‚ Purpose β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Shipping β”‚ T383838ColumbaApp β”‚ T383838Columba β”‚ T383838COLUMBA_RUNTIME_PYTHON β”‚ Embedded P… β”‚
β”‚ Experimental Model B β”‚ T383838ColumbaModelBApp β”‚ T383838Columba-ModelB β”‚ T383838COLUMBA_RUNTIME_MODEL_B β”‚ Native pro… β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

The shipping app owns T383838Python.xcframework, the Python bridge and runtime, Python model/backend sources, the Python T383838app/ resources, wheels, standard-library installation, and packaging. It has no Network Extension target dependency or embed, no packet-tunnel entitlement, and no Model B lifecycle, UI, or proxy behavior. Its default Internet TCP delivery is foreground/opportunistic; the shipping artifact does not guarantee background Internet TCP delivery.

T383838ColumbaApp still links T383838ReticulumSwift because shared public T383838MessageRepository/T383838LXMFSwift signatures expose ReticulumSwift types. That linkage does not mean the shipping app runs the native Model B stack.

The experimental app owns T383838ProxyRnsBackend, Model B host/proxy/App Group IPC sources, direct ReticulumSwift linkage, and the dependency and signed embed for T383838ColumbaNetworkExtension. It excludes the Python framework, Python-only sources and resources, wheels, bridging header, and Python packaging phases. See Model B β€” Background LXMF Delivery.

Build flavor is fixed at compile time. Each app target has exactly one canonical runtime flag. The old T383838Columba-Swift scheme, T383838Debug-Swift/T383838Release-Swift configurations, and T383838BackendPreference.modelB runtime selector are retired. T383838COLUMBA_BACKEND_SWIFT remains on Model B as a temporary compatibility condition for a transport-settings branch; it is not the architecture selector. A persisted T383838useSwiftBackend value does not select the architecture.

Building

Requires Xcode 15+ and iOS 17+.

The shipping Python build has generated local prerequisites that SPM cannot provide. On a fresh clone, provision the embedded CPython distribution and iOS wheels with the project setup scripts:

T282828
support/fetch-python.sh
support/fetch-wheels.sh

These populate the gitignored T383838Frameworks/Python.xcframework/, T383838wheels-iphoneos/, and T383838wheels-iphonesimulator/ paths consumed by the T383838ColumbaApp packaging phase. See support/README.md for pinned versions and packaging details. SPM resolves the Swift package dependencies, but it does not replace these Python prerequisites.

Standard shipping simulator build:

T282828
xcodebuild -project Columba.xcodeproj Tffea00\
-scheme Columba Tffea00\
-configuration Debug Tffea00\
-destination Ta5d6ff'generic/platform=iOS Simulator' Tffea00\
build


Experimental Model B simulator build:

T282828
xcodebuild -project Columba.xcodeproj Tffea00\
-scheme Columba-ModelB Tffea00\
-configuration Debug Tffea00\
-destination Ta5d6ff'generic/platform=iOS Simulator' Tffea00\
build


T383838Columba-ModelB is the canonical path for the experimental flavor: its Build action includes T383838ColumbaModelBApp and T383838ColumbaNetworkExtension, and its Test action includes T383838ColumbaModelBAppTests. Use T383838build-for-testing instead of T383838build when the test bundle must also be compiled. Do not build the extension separately as the normal workflow. The T383838Columba scheme is shipping-only.

Physical-device builds require a valid signing team and provisioning for the selected app. Model B device builds must also sign the extension and provision its Network Extension and App Group capabilities.

Local development against unreleased library changes

To work against an in-progress local clone of any Reticulum-stack Swift library without committing a path override, add a per-machine SPM mirror file at T383838.swiftpm/configuration/mirrors.json (T383838.swiftpm/ is gitignored):

T282828
Tb4b4b4{
Tff7b72"version"Tb4b4b4: T79c0ff1Tb4b4b4,
Tff7b72"object"Tb4b4b4: Tb4b4b4[
Tb4b4b4{ Tff7b72"original"Tb4b4b4: Ta5d6ff"https://github.com/torlando-tech/reticulum-swift.git"Tb4b4b4, Tff7b72"mirror"Tb4b4b4: Ta5d6ff"/Users/you/repos/reticulum-swift" Tb4b4b4},
Tb4b4b4{ Tff7b72"original"Tb4b4b4: Ta5d6ff"https://github.com/torlando-tech/LXMF-swift.git"Tb4b4b4, Tff7b72"mirror"Tb4b4b4: Ta5d6ff"/Users/you/repos/LXMF-swift" Tb4b4b4},
Tb4b4b4{ Tff7b72"original"Tb4b4b4: Ta5d6ff"https://github.com/torlando-tech/LXST-swift.git"Tb4b4b4, Tff7b72"mirror"Tb4b4b4: Ta5d6ff"/Users/you/repos/LXST-swift" Tb4b4b4}
Tb4b4b4]
Tb4b4b4}


The top-level key is T383838object, not T383838mirrors. That is the on-disk format SPM's T383838MirrorsStorage reads and the shape written by T383838swift package config set-mirror; using T383838mirrors produces a no-op load without a warning.

SPM resolves the listed URLs to local checkouts, so library changes are picked up without modifying T383838Package.swift or the Xcode project. Remove the file to return to published versions.

Architecture

β€’ Embedded Python RNS/LXMF β€” default shipping messaging runtime
β€’ ReticulumSwift β€” native Reticulum stack used directly by experimental Model B and linked by shipping for shared public type signatures
β€’ LXMFSwift β€” shared LXMF persistence/API surface and Model B router
β€’ LXSTSwift β€” voice call transport
β€’ MapLibre β€” offline-capable map rendering

See ARCHITECTURE.md for target ownership and dependency boundaries.

Acknowledgements

β€’ This work was partially funded by the Solarpunk Pioneers Fund
β€’ K8 and 405nm for generously donating for an iPhone
β€’ Reticulum, LXMF, and LXST by Mark Qvist

License
Served by rngit 1.4.2 - Generated in 0.55s